package com.fdb.efp.nls.service.dao;

import com.fdb.efp.nls.service.domain.ContTempInfo;
import com.fdb.efp.nls.service.vo.ContTempGVO;
import com.fdb.efp.nls.service.vo.ContTempInfoVO;
import com.fdb.efp.nls.service.vo.ContTempLinkGVO;

import java.util.List;

/**
 * <p>DAO interface:合同模板信息表				<p>
 * @author fuzm
 * @date 2018-05-07
 */
public interface ContTempInfoDao {
	
	public int insertContTempInfo(ContTempInfo contTempInfo);
	/**
	 * 插入信息,并且生效合同模版
	 * @param contTempInfo
	 * @return
	 */
	public int insertSubmitContTemp(ContTempInfo contTempInfo);
	/**
	 * 只能删除待生效的合同模版组
	 * @param contTempInfo
	 * @return
	 */
	public int deleteByPk(ContTempInfo contTempInfo);
	
	public int updateByPk(ContTempInfo contTempInfo);
	
	public int updateSubmitContTemp(ContTempInfo contTempInfo);
	
	public ContTempInfo queryByPk(ContTempInfo contTempInfo);
	
	public List<ContTempInfo> queryAllOwnerByPage(ContTempInfoVO contTempInfo);
	
	public List<ContTempInfo> queryAllCurrOrgByPage(ContTempInfoVO contTempInfo);
	
	public List<ContTempInfo> queryAllCurrDownOrgByPage(ContTempInfoVO contTempInfo);
	/**
	 * 使合同模版生效
	 * @param contTempInfo
	 * @return
	 */
	public int enableContTempInfo(ContTempInfoVO contTempInfo);
	/** 
	 * 检查是否有生效的合同模板组引用该合同模板
	 * @param contTempInfo
	 * @return >0,则是存在
	 */
	public int queryContTempGQuote(ContTempInfoVO contTempInfo);
	/**
	 * 使合同模版失效
	 * @param contTempInfo
	 * @return
	 */
	public int disableContTempInfo(ContTempInfoVO contTempInfo);
	/**
	 * 查询 当前 登录人员创建并且生效的 合同模版 
	 * @param contTempInfo
	 * @return
	 */
	public List<ContTempInfo> queryAllEnableOwnerByPage(ContTempInfoVO contTempInfo);
	/**
	 * 查询 当前登录人员的 法人机构 下所有生效的合同模版
	 * @param contTempInfo
	 * @return
	 */
	public List<ContTempInfo> queryAllEnableLegalOrgByPage(ContTempInfoVO contTempInfo);
	/**
	 * 查询合同模版组关联的 合同模版, 分页
	 * @param contTempGVO
	 * @return
	 */
	public List<ContTempInfo> queryLinkedGontTempInfosByPage(ContTempGVO contTempGVO);
	/**
	 * 查询 当前 合同模版组ID下未关联和生效的合同模版
	 * @param contTempRelGVO
	 * @return
	 */
	public List<ContTempInfo> queryNotLinkEnableByPage(ContTempLinkGVO contTempLinkGVO);
	/**
	 * 查询是否有相同的合同模版存在
	 * @param contTempInfo
	 * @return
	 */
	public int queryHaveSameData(ContTempInfo contTempInfo);
	/**
	 * 查询合同模版组关联的 合同模版, 不分页
	 * @param contTempGVO
	 * @return
	 */
	public List<ContTempInfo> queryLinkedGontTempInfos(ContTempGVO contTempGVO);
	/**
	 * 根据合同模版ID 集合, 查询合同模版
	 * @param contTempIds
	 * @return
	 */
	public List<ContTempInfo> queryContTempInfosByPKs(List<String> contTempIds);
	/**
	 * 查询当前法人机构已经新增的合同模版
	 * @param contTempGVO
	 * @return
	 */
	public List<ContTempInfo> queryContTempInfosByLeage(ContTempInfo contTempInfo);
}
